//手写的tpl-loader
//commonJS规范
function tplLoader(source) {
  // console.log(source);
  // 拿到的是组件入口文件里引入的tpl模板文件字符串代码
  //<h1 @click="handleTitleClick($event)">{{title}}</h1>
  //<h2 @click="handleTitleClick($event)">{{subTitle}}</h2>

  //其实组件里入口文件导出的是一个方法，且方法里传入一个组件
  //所以这里会返回的也是一个方法 (组件,配置参数data,配置参数methods)=>{} 

  return `
    export default (component, { template, data, methods }) => {
      //如果组件传入的不是对象会报错
      if(Object.prototype.toString.call(component) !== '[object Object]'){
        throw new Error('component must be the type of Object!');
      }

      //用户配置参数template:true时会打印模板信息
      if(template){
        console.log(\`${source}\`);
      }

      //用户配置参数data:true时会打印数据
      if(component.data && data){
        console.log(component.data());
      }

      //用户配置参数methods:true时会打印方法集合
      if(component.methods && methods){
        console.log(component.methods);
      }

      //这里会将template属性和内容新增至组件对象里
      component.template = \`${source}\`;
      
      //返回一个组件
      return component;
    };
  `;
}

module.exports = tplLoader;